1. Field of the Invention
The invention relates to the operation of digital computers, and more particularly to apparatus and methods comprising a general purpose computer designed to support the process of interpreting arbitrary machine languages.
2. Description of the Prior Art
A data processing system usually includes a processor unit which executes instructions that are stored in a memory. These instructions are transferred to the processor unit sequentially under the control of a program counter. The processor must interpret each instruction that is passed to it, and direct the machine through a series of operations which correspond to executing the instruction.
According to the prior art, the interpretation of machine language programs is typically performed by a micro programmed processor. The concept of micro programming for performing interpretation is well known to those skilled in the digital processing field. However, for the sake of clarity and comparison, a basic explanation of micro programming will first be presented.
In the early 1950's M. V. Wilkes (See "The Best Way To Design An Automatic Calculating Machine," Manchester University Inaugural Conference, July, 1951, pp. 16-18) proposed a computer which would have a variable instruction set. Normally a fixed set of instructions is available to the programmer, each instruction being made up of a succession of processing steps. The implementation of these steps constitutes the design of most of the machines. What Wilkes proposed was to replace rigid hardwired processing steps with a flexible means by which a programmer could assemble so-called "micro operations" into any instruction. A micro operation is a low level instruction which when executed results in a processing step. Micro operations may be utilized to alter a machines instruction repertoire from day to day as its applications vary. This was the origin of the idea of micro programming.
Micro programming provides a powerful means of controlling the hardware resources of a machine during each machine cycle. In particular, micro programs allow close control of hardware (register) level data manipulation. However, micro programmed computers are typically not suitable for general purpose interpretation, i.e., interpretation of arbitrary machine languages. This is because micro operations are defined in terms of hardware structure and have heretofore been devoid of language structure constructs. Actually, the primary function of micro processors, interpretation of machine language instructions, is being done indirectly, that is to say with more attention being paid to hardware resources than the above mentioned language structure constructs (e.g. grammer). How this indirect processing affects interpretation may be better appreciated by an understanding of the programming languages sought to be interpreted.
As is well known by those skilled in the art, several levels of program languages exist. In general programming languagess may be put into one of three classes: high level language programs (HLLP), assembly level language programs (ALLP), and machine level language programs (MLLP). Interpretation by a micro processor typically takes place at the MLLP level since, as is well known in the art, a MLLP is hardware oriented, not programming oriented, and requires only a single level of translation (interpretation) prior to execution. This is to say that a MLLP is a "first order" language.
ALLP's are in some sense "second order" languages in that first a translation process, termed "assembling" the language, is usually performed in order to go from an ALLP to a MLLP prior to interpretation (execution). This translation prior to interpretation is occasioned by the fact that ALLP's are designed to be more programmer oriented than MLLP's, i.e., the language is a step closer to the normal language used by a programmer in his environment, for example, the English language, and a step further from a normal language used by the machine in its environment, namely a binary code.
Still further up the hierarchy of languages are HLLP's which are in some sense third order languages in that a translation process, typically more complex than the assembly process referred to above and commonly referred to as the process of compiling, must be performed to linearize the HLLP, that is to translate it into a MLLP. HLLP's are typically the most programmer oriented and the least hardware oriented type of programming language.
Since HLLP's are obviously most suited to programmer (human) versus machine needs, high level language programming is becoming an increasingly popular vehicle for programming in general. In addition it should be noted that memory requirements for storing a representation of a HLLP is generally as little as one tenth the memory for storing the same program in MLLP form.
As a result of the indirect process of interpretation, referred to above, which pervades the prior art, it is very difficult, if not impossible in some cases, to realize an economically feasible and inherently programmable micro processor for interpreting programs which are not as "linear" as a MLLP. This is because no interpretation oriented language exists to allow the micro programmer to program in terms of constructs related to the process of interpretation. Instead, the micro programmer must program in terms of the hardware oriented micro steps referred to hereinbefore. Many hardware oriented micro steps, arranged in physically and conceptually complex sequences, would be required to directly interpret even the simplest interpretable HLLP. It should be noted that an interpretable HLLP is defined to be the equivalent HLLP with symbolic names replaced by direct access information (direct addresses). The physical process of replacing symbolic names with direct access information constitutes no part of the instant invention and is believed to be obvious to those skilled in the art. Hereinafter any reference made to interpreting a high level language program refers to the interpretation of an interpretable high level language program. It should be further noted that an interpretable HLLP is stored as a string of 1's and 0's prior to interpretation. The string to be processed is hereinafter referred to as an interpretable language string (ILS).
Clearly, it would be desirable to be able to interpret HLLP's in a direct and inherently micro programmable manner as opposed to the indirect manner discussed hereinbefore. Even more desirable would be a general purpose machine organized for interpretation, that is a machine capable of interpreting arbitrary machine languages, (defined to include interpretable HLLP's as well as MLLP's) in a direct and inherently micro programmable manner.
Thus, it is an object of this invention to set out a general purpose computer organization suitable for supporting the process of interpretation in an optimal manner.
It is a further object of this invention to establish the essential set of elementary operations (i.e., the instruction set for the aforementioned general purpose computer organization) which is capable of supporting the process of interpretation in general and which allows for easily programmed high level language processors.
It is still a further object of this invention to provide methods of interpreting and executing arbitrary machine languages in an optimal manner.